#ifndef LIFEFORM_H
#define LIFEFORM_H

#include "GameElement.H"

/*! \class LifeForm
 *  \brief Functionality of a life form in the game such as movement and dead/alive status.
 *  \details Class LifeForm inherits from the GameElement class.
 *
 *  The x and y coordinates, direction and speed of the man or monster
 *  are used to capture the movement of the life form.
 *
 *  \author Jackline Atsango
 *  \author Jean pierre vieira Pereira
 *  \version 3
 *  \date 26 September 2012
 */

class LifeForm: public GameElement
{
    public:

/*! \fn LifeForm
 *  \brief create LifeForm object
 */
        LifeForm();

/*! \fn void initialise
 *  The LifeForm object is assigned the starting coordinates, a direction, speed and an ID.
 */
        void initialise(int pos_x, int pos_y, int direction_x, int direction_y,
                          float speed_x, float speed_y, int ID );

/*! \fn void update
 *  The soil is modelled as a grid made up of 50x50 square pixels. This member function
 *  ensures that the object is located in one of these squares before it can move to the
 *  next. If the object is in a 50x50 square, boolean variables updown and leftright are true.
 *
 *  The x and y position of the object is then incremented as a multiple of the speed
 *  and direction.
 */
        void update();

/*! \fn void move_up
 *  \brief if updown is true, the y direction is set to -1.
 */
        void move_up();

/*! \fn void move_down
 *  \brief if updown is true, the y direction is set to 1.
 */
        void move_down();

/*! \fn void move_left
 *  \brief if leftright is true, the x direction is set to -1.
 */
        void move_left();

/*! \fn void move_right
 *  \brief if leftright is true, the x direction is set to 1.
 */
        void move_right();

/*! \fn void still_y
 *  These functions relate to dig dug. if a keyboard input is released, the object
 *  should remain stationary in its y coordinate.
 */
        void still_y();

/*! \fn void still_x
 *  The object should remain stationary in its x coordinate.
 */
        void still_x();

    protected:

        float _speed_x;
        float _speed_y;

        bool _UpDown;
        bool _LeftRight;

    private:



};

#endif // LIFEFORM_H
